Φορτώνει, μη φορτώνεις...

ΕΠΙΣΤΡΟΦΗ

Υλοποίηση μέσω γλώσσας Wolfram στο WLJS Notebook .

Μερικές Διαφορικές Εξισώσεις

Εξίσωση κύματος ($\partial_{tt} u-c^2 \nabla^2 u=0$)

#### Γενική λύση Clear["Global`*"] PDE = D[u[x, t], {t, 2}] - c^2 D[u[x, t], {x, 2}] == 0 (*arb1, arb2 αυθαίρετες*) uSol[x_, t_] := arb1[x + c t] + arb2[x - c t] #### Χωρισμός μεταβλητών (πεπερασμένο χωρίο) Στήσιμο ΜΔΕ. Clear["Global`*"] PDE = D[u[x, t], {t, 2}] - c^2 D[u[x, t], {x, 2}] == 0; u[x, t] = X[x]*T[t] PDE = D[u[x, t], {t, 2}] - c^2 D[u[x, t], {x, 2}] == 0 Αρχικές συνθήκες init1 = u[x, 0] == f[x] init2 = Derivative[0, 1][u][x, 0] == g[x] Συνωριακές συνθήκες bound1 = u[0, t] == 0 bound2 = u[L, t] == 0 PDE[[1]]/(c^2 X[x] T[t]) // Apart ODEt = T''[t]/(c^2 T[t]) == λ ODEx = X''[x]/X[x] == λ Εξετάζουμε πρώτα τις προς απόρριψιν περιπτώσεις $λ\geq0$. Από τις `u(0,t)==0` και `u(L,t)==0` συνάγουμε ότι `X(0)T(t)==0==X(L)T(t)`. Επομένως `X(0)==0==X(L)`, προκειμένου να αποφύγουμε τη μηδενική λύση. Assuming[λ > 0, DSolve[ODEx, X[x], x]] Assuming[λ > 0, DSolve[{ODEx, X[0] == 0, X[L] == 0}, X[x], x]] Στην περίπτωση που λ=0 έχουμε: ODEx = X''[x] == 0 DSolve[{ODEx}, X[x], x] DSolve[{ODEx, X[0] == 0, X[L] == 0}, X[x], x] Αποδείξαμε ότι λ<0, επομένως: λ = -k^2 ODEx = X''[x] + k^2 X[x] == 0 DSolve[{ODEx}, X[x], x] DSolve[{ODEx, X[0] == 0, X[L] == 0}, X[x], x] Έχουμε τις ιδιοτιμές: k = (m Pi)/L Άρα: DSolve[{ODEx, X[0] == 0, X[L] == 0}, X[x], x] DSolve[ODEt, T[t], t] Έχουμε ότι η $u_m(x,t)=\sin(\dfrac{m \pi x}{L})(a_m \cos(\dfrac{c m \pi t}{L})+b_m\sin(\dfrac{c m \pi t}{L}))$ ικανοποιεί τη Μ.Δ.Ε. και τις συνοριακές συνθήκες. Το ίδιο συμβαίνει και με κάθε γραμμικό συνδυασμό τους. Θα βρούμε ποιος γραμμικός συνδυασμός επαληθεύει και τις αρχικές συνθήκες. Θέλουμε, δηλαδή: - $\sum_{m=1}^{\infty}u_m(x,0)=f (x)\Leftrightarrow \sum_{m=1}^{\infty}a_m \sin(\dfrac{m \pi x}{L})=f(x)$ - ${\sum_{m=1}^{\infty}\partial_t u_m(x,0)=g(x)}\Leftrightarrow {\sum_{m=1}^{\infty} {\dfrac{c m b_m \pi }{L}}\sin(\dfrac{m \pi x}{L})=g(x)}$ Οι συντελεστές $a_m$ και $b_m$ θα βρεθούν πολλαπλασιάζοντας εσωτερικά με $\sin(m x)$ και τα δύο μέλη των ισοτήτων. Λαμβάνοντας υπ' όψιν την ορθογωνιότητα των ημιτόνων έχουμε: a[m_] := Assuming[Element[m, Integers], Integrate[f[x] Sin[(m π x)/L], {x, 0, L}]/ Integrate[(Sin[(m π x)/L])^2, {x, 0, L}]] a[m] b[m_] := Assuming[Element[m, Integers], Integrate[g[x] Sin[(m π x)/L], {x, 0, L}]/((c m Pi)/ L Integrate[(Sin[(m π x)/L])^2, {x, 0, L}])] b[m] un[x_, t_, m_] := Sin[(m π x)/L] (a[m] Cos[(c m π t)/L] + b[m] Sin[(c m π t)/L]) uApprox[x_, t_, n0_] := Sum[un[x, t, m], {m, 1, n0}] uApprox[x, t, 4] Ας εξειδικεύσουμε την κατάσταση, για να δούμε τι πετύχαμε. c = 4; L = 2 Pi; f[x_] := x^2 g[x_] := 2 x - 1 uApprox[x, t, 6] Table[Plot3D[Evaluate[uApprox[x, t, n0]], {x, 0, L}, {t, 0, 10}], {n0, 1, 6}] Plot3D[Evaluate[uApprox[x, t, 30]], {x, 0, L}, {t, 0, 10}, AxesLabel -> {"x","t"}]

Κώστας Κούδας | © 2025